#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
#include <assert.h>

static int printMessage (lua_State *lua)
{
	assert (lua_isstring (lua,1));
	
	const char *msg = lua_tostring (lua, 1);
	
	// debug output
	printf("script: %s", msg);
	return 0;
}

int main() {
	int iErr = 0;
	lua_State *lua = luaL_newstate();  // Open Lua
	luaopen_io (lua);              // Load io library
	// setup global printing (trace)
	lua_pushcclosure (lua, printMessage, 0);
	lua_setglobal (lua, "trace");
	if ((iErr = luaL_loadfile (lua, "test.lua")) == 0)
	{
		// Call main...
		if ((iErr = lua_pcall (lua, 0, LUA_MULTRET, 0)) == 0)
		{
			// Push the function name onto the stack
			lua_pushstring (lua, "helloWorld");
			// Function is located in the Global Table
			lua_setglobal(lua, "helloWorld");
			lua_pcall (lua, 0, 0, 0);
	   }
	}
	lua_close (lua);
}

